# -*- coding: utf-8 -*-
# @Env    : v-3.5.4
# @File   : manage.py
# @Author : Kevin.Liu
# @Date   : 2019/1/4
# @Desc   : flaskScript扩展
import os

from flask_migrate import Migrate, MigrateCommand
from flask_script import Manager, Server

# 导入项目环境
from blog import models, create_app

# 从os_environ获取env
env = os.environ.get('BLOG_ENV', 'dev')
# 通过工厂方法创建app实例
app = create_app('blog.config.%sConfig' % env.capitalize())


# 通过app对象初始化管理器对象
manager = Manager(app)

# 通过app和db对象迁移对象
migrate = Migrate(app, models.db)

# 添加server命令,用于启动development_env 环境
manager.add_command("server", Server(host="192.168.10.160", port=8080))
manager.add_command("db", MigrateCommand)


# 指定shell运行环境
@manager.shell
def make_shell_context():
    """创建一个控制台.
       返回默认导入对象
       类型是Dict
    """
    return dict(app=app, db=models.db, User=models.User, Post=models.Post, Coment=models.Comment, Tag=models.Tag,
                Server=Server)


# 命令工具启动入口
if __name__ == '__main__':
    manager.run()
